package cn.zhibang.yygh.msm.controller;

import cn.zhibang.yygh.common.result.Result;
import cn.zhibang.yygh.msm.service.MsmService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.concurrent.TimeUnit;
@Api(tags = "短信模块")
@RestController
@RequestMapping("/api/msm")
public class MsmApiController {

    @Resource
    private MsmService msmService;

    @Autowired
    private RedisTemplate<String,String> redisTemplate;

    //发送手机验证码（阿里云）
//    @GetMapping("send/{phone}")
//    public Result sendCode(@PathVariable String phone) {//得到手机号
//        //从redis获取验证码，如果获取获取到，返回ok
//        // key 手机号  value 验证码
//        String code = redisTemplate.opsForValue().get(phone);
//        if(!StringUtils.isEmpty(code)) {
//            return Result.ok();
//        }
//        //如果从redis获取不到，
//        // 生成验证码，
//        code = RandomUtil.getSixBitRandom();
//        //调用service方法，通过整合短信服务进行发送
//        boolean isSend = msmService.send(phone,code);
//
//        //生成验证码放到redis里面，设置有效时间
//        if(isSend) {
//            redisTemplate.opsForValue().set(phone,code,2, TimeUnit.MINUTES);
//            return Result.ok();
//        } else {
//            return Result.fail().message("发送短信失败");
//        }
//    }
    @ApiOperation(value = "短信验证接口")
    @GetMapping("send/{phone}")
    public Result sendCode(@PathVariable String phone){
        String codeone = redisTemplate.opsForValue().get(phone);
        if(!StringUtils.isEmpty(codeone)) {
            return Result.ok();
         }
//        String Url = "http://106.ihuyi.com/webservice/sms.php?method=Submit";
//        HttpClient client = new HttpClient();
//        PostMethod method = new PostMethod(Url);
//        client.getParams().setContentCharset("GBK");
//        method.setRequestHeader("ContentType","application/x-www-form-urlencoded;charset=GBK");
        int mobile_code = (int)((Math.random()*9+1)*100000);
        String mobile=String.valueOf(mobile_code);
//        String content = new String("您的验证码是：" + mobile + "。请不要把验证码泄露给其他人。");
//        NameValuePair[] data = {//提交短信
//                new NameValuePair("account", "C64262818"), //查看用户名 登录用户中心->验证码通知短信>产品总览->API接口信息->APIID
//                new NameValuePair("password", "2a6580403d18b3807806eb2f5d7f07e1"), //查看密码 登录用户中心->验证码通知短信>产品总览->API接口信息->APIKEY
//                //new NameValuePair("password", util.StringUtil.MD5Encode("密码")),
//                new NameValuePair("mobile", phone),
//                new NameValuePair("content", content),
//        };
//        method.setRequestBody(data);
//        try {
//            client.executeMethod(method);
//            String SubmitResult =method.getResponseBodyAsString();
//            Document doc = DocumentHelper.parseText(SubmitResult);
//            Element root = doc.getRootElement();
//            String code = root.elementText("code");
//            String msg = root.elementText("msg");
//            String smsid = root.elementText("smsid");
//            //System.out.println(code);
//            System.out.println(msg);
//            System.out.println(smsid);
//            if("2".equals(code)){
//                System.out.println("短信提交成功");
                redisTemplate.opsForValue().set(phone,mobile,2, TimeUnit.MINUTES);
//                return Result.ok();
//            } else {
//                return Result.fail().message("发送短信失败");
//            }
//        } catch (Exception e) {
//            // TODO Auto-generated catch block
//            e.printStackTrace();
//        }
        return Result.ok();
    }
}